Storage systems, such as solid state drives (SSDs) including NAND flash memory, are commonly used in electronic systems ranging from consumer products to enterprise-level computer systems. SSDs and similar memory devices are often rated on how fast they can respond to requests from a host device, commonly referred to as read requests, to access and retrieve data from the memory device. Another metric used to rate memory devices is throughput, generally meaning the average number of operations completed per unit of time. A read request triggers a sequence of actions in a memory device that culminates in the host device obtaining the requested data. For example, one action in the sequence of actions performed by a memory device may be translating a logical address for the data requested in the read request to a physical address where that requested data is located.
Each action in the sequence of actions performed by the memory device takes a certain amount of time and so it may be advantageous to try and bypass some of the sequence of actions and pre-fetch data. When a host is requesting data from a memory device in a sequential read mode, where the memory device receives requests to read large chunks of data that include a consecutive address space, the memory device may operate in a sequential read mode, since it knows where to look to pre-fetch data. The pre-fetched data would be the next amount of data that is sequentially contiguous in the logical address space with the data being retrieved in the current read command.
Although attempting to pre-fetch data in anticipation of a next read command may work for sequential mode read commands where data is contiguous, when the received read commands are for random, rather than sequential, address groups of data, the typical pre-fetch techniques, such as read look ahead mechanisms, may not provide any performance advantage at the memory device. Predicting next read commands for random read mode, where random address groups rather than sequentially addressed groups are being predicted, may call for more sophisticated prediction techniques that involve using volatile memory space for storing data related to command predictions. This volatile memory may be limited and its use may be affected by demands from other processes and power considerations.